#include <iostream>
#include <vector>
using namespace std;

void turn(vector<string>& table, int x, int y){
    int dx[5] = {-1, 1, 0, 0, 0};
    int dy[5] = {0, 0, -1, 1, 0};
    for(int i=0;i<5;i++){
        int nx = x + dx[i];
        int ny = y + dy[i];
        if(nx>=0&&nx<5&&ny>=0&&ny<5){
            table[nx][ny] = table[nx][ny] == '0' ? '1' : '0';
        }
    }
}


int solve(vector<string>& table){
    int ans = 1e9;
    for(int opt = 0; opt < 32; opt++){
        vector<string> t = table;
        int step = 0;
        for(int i=0;i<5;i++){
            if(opt >> i & 1){
                turn(t, 0, i);
                step++;
            }
        }
        for(int i = 1; i < 5; ++i){
            for(int j = 0; j < 5; ++j)
            {
                if(t[i-1][j] == '0'){
                    turn(t, i, j);
                    step++;
                }
            }
        }
        // 检查最后一行
        bool valid = true;
        for(int j = 0; j < 5; ++j){
            if(t[4][j] == '0'){
                valid = false;
                break;
            }
        }
        if(valid) ans = min(ans, step);
    }

    return ans > 6 ? -1 : ans;
}
/**
 * 
3
00111
01011
10001
11010
11100

11101
11101
11110
11111
11111

01111
11111
11111
11111
11111
 */
int main(){
    int n; cin>>n;
    while(n--){
        vector<string> table(5);
        for(int i=0;i<5;i++){
            cin>>table[i];
        }
        cout<<solve(table)<<endl;
    }
    return 0;
}
